package Array;

import java.util.Arrays;

/**
 * LC977有序数组的平方：双指针法，因为数组是有序的，目标数组也是有序的
 * 因此可以想到左右两边平方之后其实是最大的，因此用两个指针从两边往中间遍历比较
 * 谁平方之后大把谁写到答案数组中
 */
public class SortedSquares {
    public static void main(String[] args) {
        int[] nums={-4,-1,0,3,10};
        SortedSquares solution=new SortedSquares();
        int[] result=solution.sortedSquares(nums);
        for(int i:result){
            System.out.print(i+" ");
        }
    }

    public int[] sortedSquares(int[] nums) {
        int[] res = new int[nums.length];
        int left=0,right=nums.length-1;
        int k=nums.length-1;
        while(left<=right){
            if(nums[left]*nums[left]>=nums[right]*nums[right]){
                res[k]=nums[left]*nums[left];
                left++;
                k--;
            }
            else{
                res[k]=nums[right]*nums[right];
                right--;
                k--;
            }

        }
        return res;
    }
}
